From e3edc064761b75a0d9a8dfcd4ce46e9294e43f06 Mon Sep 17 00:00:00 2001 From: Jakub Matraszek Date: Sun, 29 Jan 2017 01:54:56 +0100 Subject: [PATCH] Fix building multiple binaries --- src/cargo/util/toml.rs | 31 +++++++------------------------ 1 file changed, 7 insertions(+), 24 deletions(-) diff --git a/src/cargo/util/toml.rs b/src/cargo/util/toml.rs index 704557f1a..9943a056b 100644 --- a/src/cargo/util/toml.rs +++ b/src/cargo/util/toml.rs @@ -64,15 +64,6 @@ impl Layout { benches: benches, } } - - fn main(&self) -> Option<&PathBuf> { - self.bins.iter().find(|p| { - match p.file_name().and_then(|s| s.to_str()) { - Some(s) => s == "main.rs", - None => false - } - }) - } } fn try_add_file(files: &mut Vec, file: PathBuf) { @@ -475,22 +466,10 @@ impl TomlManifest { let bins = match self.bin { Some(ref bins) => { - let bin = layout.main(); - for target in bins { target.validate_binary_name()?; - } - - bins.iter().map(|t| { - if bin.is_some() && t.path.is_none() { - TomlTarget { - path: bin.as_ref().map(|&p| PathValue::Path(p.clone())), - .. t.clone() - } - } else { - t.clone() - } - }).collect() + }; + bins.clone() } None => inferred_bin_targets(&project.name, layout) }; @@ -1147,7 +1126,11 @@ fn normalize(package_root: &Path, default: &mut FnMut(&TomlBinTarget) -> PathBuf| { for bin in bins.iter() { let path = bin.path.clone().unwrap_or_else(|| { - PathValue::Path(default(bin)) + let default_bin_path = PathValue::Path(default(bin)); + match package_root.join(p.to_path()).exists() { + true => default_bin_path, // inferred from bin's name + false => PathValue::Path(Path::new("src").join("main.rs")) + } }); let mut target = Target::bin_target(&bin.name(), package_root.join(path.to_path())); configure(bin, &mut target); -- 2.30.2